package load.properties;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.util.Map;
import java.util.Properties;

public class Mensagem {
	
	/*****************************************************************************/
	
	private static Map<String, String> MAP = null;
	private static String PATH_FILE = "../../file/properties/language_pt.properties";
	private Properties properties;

	/*****************************************************************************/
	/*************************Chaves Dos Rotulos**********************************/
	/*****************************************************************************/
	
	public static final String FISCAL_BORDA_ARVORE = "fiscalBordaArvore";
	
	public static final String FISCAL_RAIZ_ARVORE = "fiscalRaizArvore";
	
	public static final String FISCAL_TITULO_MAIN = "fiscalTituloMain";
	public static final String FISCAL_TITULO_PESQUISA_CLASSIFICACAO = "fiscalTituloPesquisaClassificacao";
	public static final String FISCAL_TITULO_ALTERAR = "fiscalTituloAlterar";
	public static final String FISCAL_TITULO_CADASTRAR = "fiscalTituloCadastrar";
	
	public static final String FISCAL_LABEL_CODIGO_CLASSIFICACAO = "fiscalLabelCodigoClassificacao";
	public static final String FISCAL_LABEL_DESCRICAO = "fiscalLabelDescricao";
	public static final String FISCAL_LABEL_RESULTADO = "fiscalLabelResultado";
	public static final String FISCAL_LABEL_PC_ENTRADA = "fiscalLabelPCEntrada";
	public static final String FISCAL_LABEL_PC_SAIDA = "fiscalLabelPCSaida";
	public static final String FISCAL_LABEL_FIGURA_FISCAL = "fiscalLabelFiguraFiscal";
	public static final String FISCAL_LABEL_TIPO_INVENTARIO = "fiscalLabelTipoInventario";
	public static final String FISCAL_LABEL_TIPO_PRODUTO = "fiscalLabelTipoProduto";
	public static final String FISCAL_LABEL_ISENTO_PC = "fiscalLabelIsentoPC";
	

	public static final String FISCAL_MENSAGEM_NENHUM_NCM = "fiscalMensagemNenhumNCM";
	public static final String FISCAL_MENSAGEM_NCM_SEM_CODIGO = "fiscalMensagemNCMSemCodigo";
	public static final String FISCAL_MENSAGEM_NCM_NAO_EXCLUIDO = "fiscalMensagemNCMNaoExcluido";
	public static final String FISCAL_MENSAGEM_JA_CADASTRADO = "fiscalMensagemJaCadastrado";
	public static final String FISCAL_MENSAGEM_NCM_MAIOR_QUATRO = "fiscalMensagemNCMMAiorQuatro";
	public static final String FISCAL_MENSAGEM_SUBITEM_INVALIDO = "fiscalMensagemSubItemInvalido";
	public static final String FISCAL_MENSAGEM_ITEM_INVALIDO = "fiscalMensagemItemInvalido";
	public static final String FISCAL_MENSAGEM_SUBPOSICAO_INVALIDO = "fiscalMensagemSubPosicaoInvalido";
	public static final String FISCAL_MENSAGEM_CAPITULOPOSICAO_INVALIDO = "fiscalMensagemCapituloPosicaoInvalido";
	public static final String FISCAL_MENSAGEM_CODIGONCM_INVALIDO = "fiscalMensagemCodigoNCMInvalido";
	public static final String FISCAL_MENSAGEM_NAO_POSSUI_PAI = "fiscalMensagemNaoPossuiPai";
	public static final String FISCAL_MENSAGEM_DESCRICAO_DEVE_PREENCHER = "fiscalMensagemDescricaoDevePreencher";
	public static final String FISCAL_MENSAGEM_STENTRADA_INVALIDO = "fiscalMensagemStPCEntradaInvalido";
	public static final String FISCAL_MENSAGEM_STSAIDA_INVALIDO = "fiscalMensagemStPCSaidaInvalido";
	public static final String FISCAL_MENSAGEM_TINVENTARIO_INVALIDO = "fiscalMensagemTInventarioInvalido";
	public static final String FISCAL_MENSAGEM_TPRODUTO_INVALIDO = "fiscalMensagemTProdutoInvalido";
	public static final String FISCAL_MENSAGEM_NCM_RESGISTROS_CARREGADOS = "fiscalMensagemNcmRegistroCarregados";
	public static final String FISCAL_MENSAGEM_NCM_RESGISTROS_NAO_CARREGADOS = "fiscalMensagemNcmRegistroNaoCarregados";
	
	public static final String FISCAL_EXTENSAO_INVALIDA = "fiscalExtensaoInvalida";
	public static final String FISCAL_ERRO_LINHA_NCM = "fiscalErroLinhaNCM";
	
	public static final String BUTTON_ALTERAR = "buttonAlterar";
	public static final String BUTTON_PESQUISA = "buttonPesquisa";
	public static final String BUTTON_SELECIONAR = "buttonSelecionar";
	public static final String BUTTON_SALVAR = "buttonSalvar";
	public static final String BUTTON_SAIR = "buttonSair";
	
	public static final String MENU_ALTERAR = "buttonAlterar";
	public static final String MENU_NOVO = "buttonNovo";
	public static final String MENU_SAIR = "buttonSair";
	public static final String MENU_EXCLUIR = "buttonExcluir";
	public static final String MENU_EXPORTAR = "buttonExportar";
	public static final String MENU_IMPORTAR = "buttonImportar";
	public static final String MENU_AJUDA = "buttonAjuda";
	
	public static final String COMBOBOX_SELECIONE_ITEM = "comboBoxSelecioneItem";
	
	public static final String TITULO_DIALOGO_ALERTA = "tituloDialogoAlerta";
	public static final String TITULO_EXPORTAR_NCM = "tituloExportarNCM";
	public static final String TITULO_IMPORTAR_NCM = "tituloImportarNCM";
	public static final String TITULO_IMPORTAR_PISCOFINS = "tituloImportarPisCofins";;
	public static final String TITULO_EXPORTAR_REGISTROS = "tituloExportarRegistros";
	public static final String TITULO_IMPORTAR_REGISTROS = "tituloImportarRegistros";
	public static final String TITULO_IMPORTAR_MEDIDA = "tituloImportarMedida";
	public static final String TITULO_GRAVAR_REGISTROS = "tituloGravarRegistros";
	
	
	/*****************************************************************************/
	/**********************Fim das Chaves dos Rotulos*****************************/
	/*****************************************************************************/

	@SuppressWarnings({ "unchecked", "rawtypes" })
	public Mensagem getInstance() {
		try {
			InputStream stream = getClass().getResourceAsStream(PATH_FILE);
			getProperties().load(stream);
			MAP = (Map) getProperties();
			stream.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return this;
	}

	private static Map<String, String> getMap() {
		if (MAP == null)
			(new Mensagem()).getInstance();
		return MAP;
	}
	public static String getValue(String key) {
		return getMap().get(key);
	}
	public void setProperties(String key, String value) {
        InputStream in;
		try {
			in = getInstance().getClass().getResource(PATH_FILE).openStream();
			getProperties().load(in);
	        File file = new java.io.File(getInstance().getClass().getResource(PATH_FILE).toURI());
	        FileOutputStream out = new FileOutputStream(file);
	        getProperties().setProperty(key, value);
	        getProperties().store(out, "alterado");
	        in.close();
	        out.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (URISyntaxException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void setProperties(Properties properties) {
		this.properties = properties;
	}

	public Properties getProperties() {
		if (properties == null) {
			properties = new Properties();
		}
		return properties;
	}
}
